There is a variety of reasons why users or administrators may want to schedule certain application programs to process at defined dates, times, intervals, or even on certain defined events. A good example is when a user boots up his/her computer after it had been powered off. In this example, the boot file is executed upon detecting the event identifying the machine as being powered on. A variety of user services may then be initialized and started, such as network services, directory services, virus scan services, etc.
Of course there are other more complex situations, where an administrator or user wants a particular program to run only on certain days of the month, such as a software audit or a full system virus scan.
The problem with these more complex scheduling situations is that the scheduling dates/events do not persist. In other words, say the software audit is to run on the first of each month. If the computer is powered off on the first and not powered on until the second of the month (such as may be the case for the month of January, where the first is a holiday for most employees), then the software audit is not run until the first of the next month. Again, if an employee is out sick, at a seminar, or out on vacation for that next month, then it will be three months before the needed software audit processes, assuming the employee is there on the first of that third month.
In other cases, because the scheduling logic does not persist, if a scheduled date passes and is not processed, the program that was to execute may in fact execute on every re-boot of the computer. So, in our prior example the software audit may process on the second of January and for each day in January or until the first of the month comes and it runs properly. Obviously, this scenario is very problematic for a user since it degrades performance of the computer and the scenario is also problematic for a network administrator because the audit is likely sent via a network connection and it will unduly tie up network bandwidth.
Consequently, there is a need for improved scheduling techniques.